package branchandbound;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;

/**
 * @author MtRider
 * @version 1.0
 * @description
 * @GiteeAndGithub MtRider
 * @date 2022/5/8 23:14
 */
public class BindingKeyTest {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("测试键盘驱动");
        /**
         * 文本框
         */
        JTextArea jTextArea = new JTextArea(10,60);
        JScrollPane jScrollPane = new JScrollPane(jTextArea);
        jFrame.add(jScrollPane);
        /**
         * 输入框 和发送按钮
         */
        JTextField jTextField = new JTextField(50);
        JButton sendButton = new JButton("发送");
        JPanel bottomJPanel = new JPanel();
        bottomJPanel.add(jTextField);
        bottomJPanel.add(sendButton);
        jFrame.add(bottomJPanel, BorderLayout.SOUTH);
        /**
         * 发送按钮或者回车要绑定的事件
         */
        Action sendListener = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                jTextArea.append(jTextField.getText() + "\n");
                jTextField.setText(null);
            }
        };
        //发送按钮绑定事件
        sendButton.addActionListener(sendListener);
        /**
         * 文本框输入内容绑定事件
         */
        jTextField.getInputMap().put(KeyStroke.getKeyStroke('\n'),"send"); // 绑定获取到输入字符为\n即回车键，对应别名为“send"
        jTextField.getActionMap().put("send",sendListener); //指定别名对应触发的监听器
        /**
         * jFrame位置、大小和关闭按钮设置
         */
        jFrame.setLocation(400,300);
        jFrame.pack();
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);;
        jFrame.setVisible(true);
    }
}
